{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "PRUNING FILTERS FOR EFFICIENT CONVNETS\n",
    "===\n",
    "\n",
    "**Reference**: https://arxiv.org/pdf/1608.08710.pdf\n",
    "\n",
    "**Author**: `Minseong Kim` (tyui592@gmail.com)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = '0'\n",
    "\n",
    "import time\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import torch\n",
    "device = torch.device('cuda')\n",
    "\n",
    "from evaluate import test_network\n",
    "from prune import prune_network"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### load: arguments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gpu_no: 0\n",
      "train_flag: True\n",
      "resume_flag: False\n",
      "prune_flag: False\n",
      "retrain_flag: False\n",
      "retrain_epoch: 20\n",
      "retrain_lr: 0.001\n",
      "data_set: CIFAR10\n",
      "data_path: ../\n",
      "vgg: vgg16_bn\n",
      "start_epoch: 0\n",
      "epoch: 350\n",
      "batch_size: 128\n",
      "num_workers: 2\n",
      "lr: 0.1\n",
      "lr_milestone: [150, 250]\n",
      "lr_gamma: 0.1\n",
      "momentum: 0.9\n",
      "weight_decay: 0.0005\n",
      "imsize: None\n",
      "cropsize: 32\n",
      "crop_padding: 4\n",
      "hflip: 0.5\n",
      "print_freq: 100\n",
      "load_path: None\n",
      "save_path: trained_model/vgg16_bn_cifar10/\n",
      "independent_prune_flag: False\n",
      "prune_layers: None\n",
      "prune_channels: None\n"
     ]
    }
   ],
   "source": [
    "load_path = 'trained_model/vgg16_bn_cifar10/'\n",
    "\n",
    "args = torch.load(load_path+'arguments.pth')\n",
    "for key, value in vars(args).items():\n",
    "    print(\"%s: %s\"%(key, value))\n",
    "\n",
    "#################################\n",
    "args.load_path = load_path + 'check_point.pth'\n",
    "args.save_path = load_path+'%s/'%time.ctime().replace(' ', '_')\n",
    "if not os.path.exists(args.save_path):\n",
    "    os.makedirs(args.save_path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### check: accuracy of test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Files already downloaded and verified\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:27 2019: Test information, Data(s): 1.115, Forward(s): 0.475, Top1: 93.470, Top5: 99.430, \n"
     ]
    }
   ],
   "source": [
    "network, test_set, (top1, top5) = test_network(args)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### check: normalized abs sum of the filter weights (Figure 2 (a) of the paper)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c']\n",
    "lines = ['-', '--', '-.']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(7,5))\n",
    "conv_count = 0\n",
    "for layer in network.features:\n",
    "    if isinstance(layer, torch.nn.Conv2d):\n",
    "        line_style = colors[conv_count%len(colors)] + lines[conv_count//len(colors)]\n",
    "        \n",
    "        # filter weight dimension info: out_ch, in_ch, k1, k2\n",
    "        fw = layer.weight.data.cpu().numpy()\n",
    "        \n",
    "        # sort descending order\n",
    "        sorted_abs_sum = np.sort(np.sum(np.abs(fw.reshape(fw.shape[0], -1)), axis=1))[::-1]\n",
    "        \n",
    "        # normalize with maximum value\n",
    "        normalized_abs_sum = sorted_abs_sum/sorted_abs_sum[0]\n",
    "        conv_count += 1\n",
    "        plt.plot(np.linspace(0, 100, normalized_abs_sum.shape[0]), normalized_abs_sum, line_style, label='conv %d'%conv_count)\n",
    "        \n",
    "plt.title(\"Data: %s, Model: %s\"%(args.data_set, args.vgg))        \n",
    "plt.ylabel(\"normalized abs sum of filter weight\")\n",
    "plt.xlabel(\"filter index / # filters (%)\")\n",
    "plt.legend(loc='upper right')\n",
    "plt.xlim([0, 140])\n",
    "plt.grid()\n",
    "plt.savefig(\"figure1.png\", dpi=150, bbox_inches='tight')\n",
    "plt.show()        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### check: accuracy of the pruned network (Figure 2 (b) of the paper)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "prune_step_ratio = 1/8\n",
    "max_channel_ratio = 0.90 \n",
    "\n",
    "prune_channels = [64, 64, 128, 128, 256, 256, 256, 512, 512, 512, 512, 512, 512]\n",
    "prune_layers = ['conv1', 'conv2', 'conv3', 'conv4', 'conv5', 'conv6', 'conv7', 'conv8', 'conv9', 'conv10', 'conv11', 'conv12', 'conv13']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "check accuracy of the pruned network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:31 2019: Test information, Data(s): 1.112, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:31 2019: conv1 Layer, 8 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 56, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(56, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(56, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:33 2019: Test information, Data(s): 1.115, Forward(s): 0.168, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:33 2019: conv1 Layer, 16 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:36 2019: Test information, Data(s): 1.115, Forward(s): 0.170, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:36 2019: conv1 Layer, 24 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 40, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(40, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(40, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:38 2019: Test information, Data(s): 1.127, Forward(s): 0.170, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:38 2019: conv1 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:40 2019: Test information, Data(s): 1.116, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:40 2019: conv1 Layer, 40 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(24, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:43 2019: Test information, Data(s): 1.114, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:43 2019: conv1 Layer, 48 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(16, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:45 2019: Test information, Data(s): 1.110, Forward(s): 0.169, Top1: 92.670, Top5: 99.250, \n",
      "\n",
      "Wed Oct  2 15:58:45 2019: conv1 Layer, 57 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 7, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(7, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(7, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:47 2019: Test information, Data(s): 1.112, Forward(s): 0.169, Top1: 85.620, Top5: 96.930, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:51 2019: Test information, Data(s): 1.111, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:51 2019: conv2 Layer, 8 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 56, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(56, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(56, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:53 2019: Test information, Data(s): 1.124, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:58:53 2019: conv2 Layer, 16 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(48, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:56 2019: Test information, Data(s): 1.116, Forward(s): 0.168, Top1: 78.600, Top5: 96.460, \n",
      "\n",
      "Wed Oct  2 15:58:56 2019: conv2 Layer, 24 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 40, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(40, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(40, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:58:58 2019: Test information, Data(s): 1.136, Forward(s): 0.172, Top1: 70.280, Top5: 93.090, \n",
      "\n",
      "Wed Oct  2 15:58:58 2019: conv2 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(32, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:00 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 63.450, Top5: 90.990, \n",
      "\n",
      "Wed Oct  2 15:59:00 2019: conv2 Layer, 40 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(24, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:02 2019: Test information, Data(s): 1.125, Forward(s): 0.170, Top1: 39.830, Top5: 79.480, \n",
      "\n",
      "Wed Oct  2 15:59:02 2019: conv2 Layer, 48 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(16, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:05 2019: Test information, Data(s): 1.116, Forward(s): 0.169, Top1: 14.860, Top5: 58.740, \n",
      "\n",
      "Wed Oct  2 15:59:05 2019: conv2 Layer, 57 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 7, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(7, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(7, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:07 2019: Test information, Data(s): 1.117, Forward(s): 0.169, Top1: 11.750, Top5: 48.730, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:10 2019: Test information, Data(s): 1.115, Forward(s): 0.170, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:59:10 2019: conv3 Layer, 16 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 112, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(112, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:13 2019: Test information, Data(s): 1.131, Forward(s): 0.172, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:59:13 2019: conv3 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(96, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:15 2019: Test information, Data(s): 1.142, Forward(s): 0.173, Top1: 93.370, Top5: 99.410, \n",
      "\n",
      "Wed Oct  2 15:59:15 2019: conv3 Layer, 49 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 79, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(79, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(79, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:18 2019: Test information, Data(s): 1.142, Forward(s): 0.174, Top1: 92.490, Top5: 99.290, \n",
      "\n",
      "Wed Oct  2 15:59:18 2019: conv3 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 63, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(63, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(63, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:20 2019: Test information, Data(s): 1.130, Forward(s): 0.173, Top1: 87.990, Top5: 98.470, \n",
      "\n",
      "Wed Oct  2 15:59:20 2019: conv3 Layer, 82 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 46, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(46, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(46, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:22 2019: Test information, Data(s): 1.131, Forward(s): 0.172, Top1: 78.820, Top5: 96.230, \n",
      "\n",
      "Wed Oct  2 15:59:22 2019: conv3 Layer, 98 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 30, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(30, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(30, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:25 2019: Test information, Data(s): 1.125, Forward(s): 0.172, Top1: 55.100, Top5: 88.820, \n",
      "\n",
      "Wed Oct  2 15:59:25 2019: conv3 Layer, 115 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 13, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(13, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(13, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:27 2019: Test information, Data(s): 1.124, Forward(s): 0.172, Top1: 17.440, Top5: 57.590, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:31 2019: Test information, Data(s): 1.106, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:59:31 2019: conv4 Layer, 16 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 112, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(112, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:33 2019: Test information, Data(s): 1.129, Forward(s): 0.170, Top1: 93.090, Top5: 99.330, \n",
      "\n",
      "Wed Oct  2 15:59:33 2019: conv4 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(96, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:36 2019: Test information, Data(s): 1.126, Forward(s): 0.171, Top1: 91.450, Top5: 99.060, \n",
      "\n",
      "Wed Oct  2 15:59:36 2019: conv4 Layer, 49 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 79, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(79, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(79, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:38 2019: Test information, Data(s): 1.121, Forward(s): 0.171, Top1: 86.460, Top5: 97.740, \n",
      "\n",
      "Wed Oct  2 15:59:38 2019: conv4 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 63, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(63, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(63, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:40 2019: Test information, Data(s): 1.120, Forward(s): 0.170, Top1: 69.960, Top5: 93.640, \n",
      "\n",
      "Wed Oct  2 15:59:40 2019: conv4 Layer, 82 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 46, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(46, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(46, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:43 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 48.090, Top5: 84.780, \n",
      "\n",
      "Wed Oct  2 15:59:43 2019: conv4 Layer, 98 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 30, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(30, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(30, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:45 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 25.980, Top5: 67.130, \n",
      "\n",
      "Wed Oct  2 15:59:45 2019: conv4 Layer, 115 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 13, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(13, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(13, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:47 2019: Test information, Data(s): 1.123, Forward(s): 0.170, Top1: 11.880, Top5: 55.720, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:51 2019: Test information, Data(s): 1.112, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 15:59:51 2019: conv5 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 224, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(224, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(224, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:53 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 92.550, Top5: 99.120, \n",
      "\n",
      "Wed Oct  2 15:59:53 2019: conv5 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 191, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(191, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(191, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:56 2019: Test information, Data(s): 1.143, Forward(s): 0.173, Top1: 90.730, Top5: 98.600, \n",
      "\n",
      "Wed Oct  2 15:59:56 2019: conv5 Layer, 98 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 158, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(158, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(158, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 15:59:58 2019: Test information, Data(s): 1.118, Forward(s): 0.170, Top1: 86.110, Top5: 97.160, \n",
      "\n",
      "Wed Oct  2 15:59:58 2019: conv5 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 125, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(125, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(125, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:00 2019: Test information, Data(s): 1.116, Forward(s): 0.170, Top1: 72.490, Top5: 91.900, \n",
      "\n",
      "Wed Oct  2 16:00:00 2019: conv5 Layer, 164 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 92, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(92, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(92, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:03 2019: Test information, Data(s): 1.118, Forward(s): 0.170, Top1: 53.610, Top5: 82.360, \n",
      "\n",
      "Wed Oct  2 16:00:03 2019: conv5 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 59, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(59, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(59, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:05 2019: Test information, Data(s): 1.118, Forward(s): 0.170, Top1: 33.920, Top5: 69.470, \n",
      "\n",
      "Wed Oct  2 16:00:05 2019: conv5 Layer, 230 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 26, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(26, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(26, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:07 2019: Test information, Data(s): 1.125, Forward(s): 0.171, Top1: 16.990, Top5: 58.830, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:11 2019: Test information, Data(s): 1.119, Forward(s): 0.170, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:00:11 2019: conv6 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 224, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(224, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(224, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:13 2019: Test information, Data(s): 1.124, Forward(s): 0.170, Top1: 93.210, Top5: 99.290, \n",
      "\n",
      "Wed Oct  2 16:00:13 2019: conv6 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 191, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(191, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(191, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:16 2019: Test information, Data(s): 1.141, Forward(s): 0.172, Top1: 90.860, Top5: 98.790, \n",
      "\n",
      "Wed Oct  2 16:00:16 2019: conv6 Layer, 98 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 158, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(158, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(158, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:18 2019: Test information, Data(s): 1.139, Forward(s): 0.173, Top1: 87.880, Top5: 98.070, \n",
      "\n",
      "Wed Oct  2 16:00:18 2019: conv6 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 125, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(125, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(125, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:21 2019: Test information, Data(s): 1.128, Forward(s): 0.170, Top1: 83.520, Top5: 96.400, \n",
      "\n",
      "Wed Oct  2 16:00:21 2019: conv6 Layer, 164 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 92, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(92, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(92, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:23 2019: Test information, Data(s): 1.124, Forward(s): 0.171, Top1: 78.480, Top5: 94.380, \n",
      "\n",
      "Wed Oct  2 16:00:23 2019: conv6 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 59, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(59, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(59, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:25 2019: Test information, Data(s): 1.127, Forward(s): 0.170, Top1: 60.850, Top5: 85.950, \n",
      "\n",
      "Wed Oct  2 16:00:25 2019: conv6 Layer, 230 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 26, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(26, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(26, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:28 2019: Test information, Data(s): 1.130, Forward(s): 0.171, Top1: 32.610, Top5: 80.760, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:31 2019: Test information, Data(s): 1.107, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:00:31 2019: conv7 Layer, 32 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 224, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(224, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(224, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:34 2019: Test information, Data(s): 1.138, Forward(s): 0.172, Top1: 93.060, Top5: 99.300, \n",
      "\n",
      "Wed Oct  2 16:00:34 2019: conv7 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 191, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(191, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(191, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:36 2019: Test information, Data(s): 1.124, Forward(s): 0.169, Top1: 92.100, Top5: 99.240, \n",
      "\n",
      "Wed Oct  2 16:00:36 2019: conv7 Layer, 98 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 158, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(158, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(158, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:38 2019: Test information, Data(s): 1.130, Forward(s): 0.171, Top1: 90.770, Top5: 99.080, \n",
      "\n",
      "Wed Oct  2 16:00:38 2019: conv7 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 125, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(125, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(125, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:41 2019: Test information, Data(s): 1.123, Forward(s): 0.169, Top1: 88.940, Top5: 98.670, \n",
      "\n",
      "Wed Oct  2 16:00:41 2019: conv7 Layer, 164 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 92, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(92, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(92, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:43 2019: Test information, Data(s): 1.120, Forward(s): 0.170, Top1: 80.720, Top5: 97.050, \n",
      "\n",
      "Wed Oct  2 16:00:43 2019: conv7 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 59, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(59, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(59, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:45 2019: Test information, Data(s): 1.122, Forward(s): 0.168, Top1: 66.680, Top5: 95.610, \n",
      "\n",
      "Wed Oct  2 16:00:45 2019: conv7 Layer, 230 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 26, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(26, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(26, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:48 2019: Test information, Data(s): 1.132, Forward(s): 0.173, Top1: 49.350, Top5: 87.970, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:51 2019: Test information, Data(s): 1.124, Forward(s): 0.172, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:00:51 2019: conv8 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 447, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(447, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(447, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:54 2019: Test information, Data(s): 1.144, Forward(s): 0.172, Top1: 93.510, Top5: 99.390, \n",
      "\n",
      "Wed Oct  2 16:00:54 2019: conv8 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 381, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(381, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(381, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:56 2019: Test information, Data(s): 1.115, Forward(s): 0.169, Top1: 93.370, Top5: 99.300, \n",
      "\n",
      "Wed Oct  2 16:00:56 2019: conv8 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 315, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(315, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(315, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:00:59 2019: Test information, Data(s): 1.115, Forward(s): 0.168, Top1: 93.160, Top5: 99.230, \n",
      "\n",
      "Wed Oct  2 16:00:59 2019: conv8 Layer, 262 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 250, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(250, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(250, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:01 2019: Test information, Data(s): 1.115, Forward(s): 0.168, Top1: 92.780, Top5: 99.160, \n",
      "\n",
      "Wed Oct  2 16:01:01 2019: conv8 Layer, 328 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 184, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(184, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:03 2019: Test information, Data(s): 1.117, Forward(s): 0.168, Top1: 91.180, Top5: 98.930, \n",
      "\n",
      "Wed Oct  2 16:01:03 2019: conv8 Layer, 394 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 118, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(118, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(118, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:06 2019: Test information, Data(s): 1.118, Forward(s): 0.168, Top1: 81.630, Top5: 95.890, \n",
      "\n",
      "Wed Oct  2 16:01:06 2019: conv8 Layer, 460 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 52, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(52, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(52, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:08 2019: Test information, Data(s): 1.117, Forward(s): 0.168, Top1: 62.120, Top5: 88.870, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:12 2019: Test information, Data(s): 1.128, Forward(s): 0.171, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:12 2019: conv9 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 447, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(447, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(447, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:14 2019: Test information, Data(s): 1.127, Forward(s): 0.170, Top1: 93.450, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:14 2019: conv9 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 381, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(381, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(381, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:16 2019: Test information, Data(s): 1.122, Forward(s): 0.169, Top1: 93.480, Top5: 99.420, \n",
      "\n",
      "Wed Oct  2 16:01:16 2019: conv9 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 315, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(315, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(315, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:19 2019: Test information, Data(s): 1.121, Forward(s): 0.169, Top1: 93.420, Top5: 99.440, \n",
      "\n",
      "Wed Oct  2 16:01:19 2019: conv9 Layer, 262 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 250, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(250, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(250, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:21 2019: Test information, Data(s): 1.119, Forward(s): 0.169, Top1: 93.430, Top5: 99.450, \n",
      "\n",
      "Wed Oct  2 16:01:21 2019: conv9 Layer, 328 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 184, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(184, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:23 2019: Test information, Data(s): 1.116, Forward(s): 0.169, Top1: 93.440, Top5: 99.410, \n",
      "\n",
      "Wed Oct  2 16:01:23 2019: conv9 Layer, 394 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 118, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(118, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(118, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:26 2019: Test information, Data(s): 1.121, Forward(s): 0.170, Top1: 93.430, Top5: 99.450, \n",
      "\n",
      "Wed Oct  2 16:01:26 2019: conv9 Layer, 460 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 52, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(52, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(52, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:28 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 92.710, Top5: 99.310, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:32 2019: Test information, Data(s): 1.127, Forward(s): 0.173, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:32 2019: conv10 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 447, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(447, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(447, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:34 2019: Test information, Data(s): 1.132, Forward(s): 0.171, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:34 2019: conv10 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 381, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(381, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(381, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:36 2019: Test information, Data(s): 1.128, Forward(s): 0.170, Top1: 93.470, Top5: 99.420, \n",
      "\n",
      "Wed Oct  2 16:01:36 2019: conv10 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 315, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(315, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(315, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:39 2019: Test information, Data(s): 1.130, Forward(s): 0.171, Top1: 93.480, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:39 2019: conv10 Layer, 262 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 250, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(250, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(250, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:41 2019: Test information, Data(s): 1.121, Forward(s): 0.170, Top1: 93.470, Top5: 99.450, \n",
      "\n",
      "Wed Oct  2 16:01:41 2019: conv10 Layer, 328 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 184, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(184, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:44 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 93.480, Top5: 99.460, \n",
      "\n",
      "Wed Oct  2 16:01:44 2019: conv10 Layer, 394 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 118, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(118, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(118, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:46 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 93.410, Top5: 99.370, \n",
      "\n",
      "Wed Oct  2 16:01:46 2019: conv10 Layer, 460 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 52, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(52, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(52, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:48 2019: Test information, Data(s): 1.120, Forward(s): 0.170, Top1: 93.120, Top5: 99.150, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:52 2019: Test information, Data(s): 1.132, Forward(s): 0.172, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:52 2019: conv11 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 447, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(447, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(447, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:54 2019: Test information, Data(s): 1.125, Forward(s): 0.170, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:01:54 2019: conv11 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 381, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(381, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(381, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:57 2019: Test information, Data(s): 1.124, Forward(s): 0.170, Top1: 93.450, Top5: 99.420, \n",
      "\n",
      "Wed Oct  2 16:01:57 2019: conv11 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 315, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(315, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(315, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:01:59 2019: Test information, Data(s): 1.123, Forward(s): 0.171, Top1: 93.490, Top5: 99.440, \n",
      "\n",
      "Wed Oct  2 16:01:59 2019: conv11 Layer, 262 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 250, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(250, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(250, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:01 2019: Test information, Data(s): 1.125, Forward(s): 0.171, Top1: 93.530, Top5: 99.500, \n",
      "\n",
      "Wed Oct  2 16:02:01 2019: conv11 Layer, 328 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 184, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(184, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:04 2019: Test information, Data(s): 1.126, Forward(s): 0.171, Top1: 93.430, Top5: 99.410, \n",
      "\n",
      "Wed Oct  2 16:02:04 2019: conv11 Layer, 394 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 118, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(118, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(118, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:06 2019: Test information, Data(s): 1.119, Forward(s): 0.171, Top1: 93.370, Top5: 99.380, \n",
      "\n",
      "Wed Oct  2 16:02:06 2019: conv11 Layer, 460 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 52, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(52, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(52, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:08 2019: Test information, Data(s): 1.115, Forward(s): 0.169, Top1: 68.710, Top5: 99.030, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:12 2019: Test information, Data(s): 1.110, Forward(s): 0.168, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:12 2019: conv12 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 447, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(447, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(447, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:14 2019: Test information, Data(s): 1.127, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:14 2019: conv12 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 381, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(381, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(381, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:17 2019: Test information, Data(s): 1.113, Forward(s): 0.168, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:17 2019: conv12 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 315, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(315, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(315, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:19 2019: Test information, Data(s): 1.120, Forward(s): 0.170, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:19 2019: conv12 Layer, 262 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 250, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(250, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(250, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:21 2019: Test information, Data(s): 1.117, Forward(s): 0.170, Top1: 93.500, Top5: 99.450, \n",
      "\n",
      "Wed Oct  2 16:02:21 2019: conv12 Layer, 328 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 184, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(184, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:24 2019: Test information, Data(s): 1.115, Forward(s): 0.170, Top1: 93.490, Top5: 99.480, \n",
      "\n",
      "Wed Oct  2 16:02:24 2019: conv12 Layer, 394 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 118, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(118, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(118, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:26 2019: Test information, Data(s): 1.115, Forward(s): 0.169, Top1: 93.340, Top5: 99.410, \n",
      "\n",
      "Wed Oct  2 16:02:26 2019: conv12 Layer, 460 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 52, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(52, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(52, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:28 2019: Test information, Data(s): 1.120, Forward(s): 0.169, Top1: 43.370, Top5: 88.970, \n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:32 2019: Test information, Data(s): 1.108, Forward(s): 0.169, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:32 2019: conv13 Layer, 65 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 447, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(447, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=447, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:34 2019: Test information, Data(s): 1.122, Forward(s): 0.170, Top1: 93.460, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:34 2019: conv13 Layer, 131 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 381, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(381, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=381, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:37 2019: Test information, Data(s): 1.123, Forward(s): 0.169, Top1: 93.470, Top5: 99.440, \n",
      "\n",
      "Wed Oct  2 16:02:37 2019: conv13 Layer, 197 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 315, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(315, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=315, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:39 2019: Test information, Data(s): 1.129, Forward(s): 0.172, Top1: 93.520, Top5: 99.450, \n",
      "\n",
      "Wed Oct  2 16:02:39 2019: conv13 Layer, 262 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 250, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(250, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=250, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:41 2019: Test information, Data(s): 1.117, Forward(s): 0.166, Top1: 93.460, Top5: 99.360, \n",
      "\n",
      "Wed Oct  2 16:02:41 2019: conv13 Layer, 328 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 184, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=184, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:44 2019: Test information, Data(s): 1.117, Forward(s): 0.167, Top1: 93.380, Top5: 99.240, \n",
      "\n",
      "Wed Oct  2 16:02:44 2019: conv13 Layer, 394 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 118, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(118, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=118, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:46 2019: Test information, Data(s): 1.128, Forward(s): 0.169, Top1: 66.960, Top5: 98.280, \n",
      "\n",
      "Wed Oct  2 16:02:46 2019: conv13 Layer, 460 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 52, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(52, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=52, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:48 2019: Test information, Data(s): 1.124, Forward(s): 0.170, Top1: 44.280, Top5: 62.030, \n"
     ]
    }
   ],
   "source": [
    "top1_accuracies = {}\n",
    "top5_accuracies = {}\n",
    "\n",
    "for conv, channel in zip(prune_layers, prune_channels):    \n",
    "    top1_accuracies[conv] = []\n",
    "    top5_accuracies[conv] = []\n",
    "    \n",
    "    # load new network and check accuracy\n",
    "    network, _, _ = test_network(args, data_set=test_set)\n",
    "        \n",
    "    # remove 0 channels ~ M (max_channel_ratio) % of total channels\n",
    "    step = np.linspace(0, int(channel*max_channel_ratio), int(1/prune_step_ratio), dtype=np.int)\n",
    "    steps = (step[1:] - step[:-1]).tolist()\n",
    "    \n",
    "    for i in range(len(steps)):\n",
    "        print(\"\\n%s: %s Layer, %d Channels pruned\"%(time.ctime(), conv, sum(steps[:i+1])))\n",
    "        \n",
    "        # set prune information\n",
    "        args.prune_layers = [conv]\n",
    "        args.prune_channels =[steps[i]]\n",
    "\n",
    "        network = prune_network(args, network)\n",
    "        \n",
    "        network, _, (top1, top5) = test_network(args, network, test_set)\n",
    "            \n",
    "        top1_accuracies[conv].append(top1)\n",
    "        top5_accuracies[conv].append(top5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "plot accuracy graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(7,5))\n",
    "for index, (key, value) in enumerate(top1_accuracies.items()):\n",
    "    line_style = colors[index%len(colors)] + lines[index//len(colors)] +'o'\n",
    "    plt.plot(np.linspace(0, 95, len(value)), value, line_style, label=key)\n",
    "\n",
    "plt.title(\"Data: %s, Model: %s, pruned smallest filters\"%(args.data_set, args.vgg))        \n",
    "plt.ylabel(\"Top1 Accuracy\")\n",
    "plt.xlabel(\"Filters Pruned Away (%)\")\n",
    "plt.legend(loc='lower left')\n",
    "plt.grid()\n",
    "plt.xlim(0, 100)\n",
    "plt.savefig(\"figure2_top1.png\", dpi=150, bbox_inches='tight')\n",
    "plt.show()                \n",
    "\n",
    "plt.figure(figsize=(7,5))\n",
    "for index, (key, value) in enumerate(top5_accuracies.items()):\n",
    "    line_style = colors[index%len(colors)] + lines[index//len(colors)] +'o'\n",
    "    plt.plot(np.linspace(0, 95, len(value)), value, line_style, label=key)\n",
    "\n",
    "plt.title(\"Data: %s, Model: %s, pruned smallest filters\"%(args.data_set, args.vgg))        \n",
    "plt.ylabel(\"Top5 Accuracy\")\n",
    "plt.xlabel(\"Filters Pruned Away (%)\")\n",
    "plt.legend(loc='lower left')\n",
    "plt.grid()\n",
    "plt.xlim(0, 100)\n",
    "plt.savefig(\"figure2_top5.png\", dpi=150, bbox_inches='tight')\n",
    "plt.show()                "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### check: accuracy of retrained the pruned network (Figure 2 (c) of the paper)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "args.retrain_flag = True\n",
    "args.retrain_epoch = 10\n",
    "args.independent_prune_flag = False\n",
    "args.retrain_lr = 0.001"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "check accuracy of the retrained pruned network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tEvalute network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:53 2019: Test information, Data(s): 1.108, Forward(s): 0.166, Top1: 93.470, Top5: 99.430, \n",
      "\n",
      "Wed Oct  2 16:02:53 2019: conv1 Layer, 8 Channels pruned\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tPrune network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 56, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): BatchNorm2d(56, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Conv2d(56, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (12): ReLU(inplace=True)\n",
      "    (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (16): ReLU(inplace=True)\n",
      "    (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (19): ReLU(inplace=True)\n",
      "    (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (26): ReLU(inplace=True)\n",
      "    (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (32): ReLU(inplace=True)\n",
      "    (33): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (34): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (35): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (36): ReLU(inplace=True)\n",
      "    (37): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (38): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (39): ReLU(inplace=True)\n",
      "    (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (42): ReLU(inplace=True)\n",
      "    (43): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=512, out_features=512, bias=True)\n",
      "    (1): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    (2): Linear(in_features=512, out_features=10, bias=True)\n",
      "  )\n",
      ")\n",
      "Files already downloaded and verified\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "\tTrain network\n",
      "-*--*--*--*--*--*--*--*--*--*-\n",
      "Wed Oct  2 16:02:54 2019: Epoch [0], Iteration [0/391/], Data(s): 0.025, Loss(s): 0.001, Forward(s): 0.233, Backward(s): 0.440, Top1: 100.000, Top5: 100.0000, Loss: 0.003\n",
      "Wed Oct  2 16:02:59 2019: Epoch [0], Iteration [100/391/], Data(s): 0.019, Loss(s): 0.005, Forward(s): 0.005, Backward(s): 0.010, Top1: 99.985, Top5: 100.0000, Loss: 0.002\n",
      "Wed Oct  2 16:03:03 2019: Epoch [0], Iteration [200/391/], Data(s): 0.020, Loss(s): 0.005, Forward(s): 0.003, Backward(s): 0.008, Top1: 99.961, Top5: 100.0000, Loss: 0.003\n",
      "Wed Oct  2 16:03:08 2019: Epoch [0], Iteration [300/391/], Data(s): 0.020, Loss(s): 0.005, Forward(s): 0.003, Backward(s): 0.007, Top1: 99.969, Top5: 100.0000, Loss: 0.002\n",
      "Wed Oct  2 16:03:12 2019: Epoch [1], Iteration [0/391/], Data(s): 0.027, Loss(s): 0.007, Forward(s): 0.006, Backward(s): 0.007, Top1: 100.000, Top5: 100.0000, Loss: 0.003\n",
      "Wed Oct  2 16:03:17 2019: Epoch [1], Iteration [100/391/], Data(s): 0.020, Loss(s): 0.004, Forward(s): 0.002, Backward(s): 0.007, Top1: 99.961, Top5: 100.0000, Loss: 0.003\n",
      "Wed Oct  2 16:03:21 2019: Epoch [1], Iteration [200/391/], Data(s): 0.020, Loss(s): 0.004, Forward(s): 0.002, Backward(s): 0.007, Top1: 99.973, Top5: 100.0000, Loss: 0.002\n",
      "Wed Oct  2 16:03:25 2019: Epoch [1], Iteration [300/391/], Data(s): 0.020, Loss(s): 0.005, Forward(s): 0.002, Backward(s): 0.007, Top1: 99.974, Top5: 100.0000, Loss: 0.003\n",
      "Wed Oct  2 16:03:29 2019: Epoch [2], Iteration [0/391/], Data(s): 0.029, Loss(s): 0.004, Forward(s): 0.002, Backward(s): 0.004, Top1: 100.000, Top5: 100.0000, Loss: 0.003\n",
      "Wed Oct  2 16:03:34 2019: Epoch [2], Iteration [100/391/], Data(s): 0.019, Loss(s): 0.006, Forward(s): 0.002, Backward(s): 0.004, Top1: 99.961, Top5: 100.0000, Loss: 0.003\n"
     ]
    }
   ],
   "source": [
    "top1_accuracies = {}\n",
    "top5_accuracies = {}\n",
    "\n",
    "for conv, channel in zip(prune_layers, prune_channels):    \n",
    "    top1_accuracies[conv] = []\n",
    "    top5_accuracies[conv] = []\n",
    "    \n",
    "    # load new network and check accuracy\n",
    "    network, _, _ = test_network(args, data_set=test_set)\n",
    "        \n",
    "    # remove 0 channels ~ M (max_channel_ratio) % of total channels\n",
    "    step = np.linspace(0, int(channel*max_channel_ratio), int(1/prune_step_ratio), dtype=np.int)\n",
    "    steps = (step[1:] - step[:-1]).tolist()\n",
    "    \n",
    "    for i in range(len(steps)):\n",
    "        print(\"\\n%s: %s Layer, %d Channels pruned\"%(time.ctime(), conv, sum(steps[:i+1])))\n",
    "        \n",
    "        # set prune information\n",
    "        args.prune_layers = [conv]\n",
    "        args.prune_channels =[steps[i]]\n",
    "\n",
    "        network = prune_network(args, network)\n",
    "        \n",
    "        network, _, (top1, top5) = test_network(args, network, test_set)\n",
    "            \n",
    "        top1_accuracies[conv].append(top1)\n",
    "        top5_accuracies[conv].append(top5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "plot the accuracy graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.figure(figsize=(7,5))\n",
    "for index, (key, value) in enumerate(top1_accuracies.items()):\n",
    "    line_style = colors[index%len(colors)] + lines[index//len(colors)] +'o'\n",
    "    plt.plot(np.linspace(0, 95, len(value)), value, line_style, label=key)\n",
    "\n",
    "plt.title(\"Data: %s, Model: %s, pruned smallest filters, retrain %d epochs\"%(args.data_set, args.vgg, args.retrain_epoch))\n",
    "plt.ylabel(\"Top1 Accuracy\")\n",
    "plt.xlabel(\"Filters Pruned Away (%)\")\n",
    "plt.legend(loc='lower left')\n",
    "plt.grid()\n",
    "plt.xlim(0, 100)\n",
    "plt.savefig(\"figure3_top1.png\", dpi=150, bbox_inches='tight')\n",
    "plt.show()                \n",
    "\n",
    "plt.figure(figsize=(7,5))\n",
    "for index, (key, value) in enumerate(top5_accuracies.items()):\n",
    "    line_style = colors[index%len(colors)] + lines[index//len(colors)] +'o'\n",
    "    plt.plot(np.linspace(0, 95, len(value)), value, line_style, label=key)\n",
    "\n",
    "plt.title(\"Data: %s, Model: %s, pruned smallest filters, retrain %d epochs\"%(args.data_set, args.vgg, args.retrain_epoch))\n",
    "plt.ylabel(\"Top5 Accuracy\")\n",
    "plt.xlabel(\"Filters Pruned Away (%)\")\n",
    "plt.legend(loc='lower left')\n",
    "plt.grid()\n",
    "plt.xlim(0, 100)\n",
    "plt.savefig(\"figure3_top5.png\", dpi=150, bbox_inches='tight')\n",
    "plt.show()                "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "mskim_py-1.2",
   "language": "python",
   "name": "mskim_pytorch_1.2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
